/**
 * wxjssdk工具类
 */
import Wxjssdk from 'weixin-js-sdk';
class WxJs {
	/**
	 * @param {Object} arg  https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#63
	 */
	constructor({
		jsApiList,
		appid,
		data
	}) {
		Wxjssdk.config({
			debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
			appId: appid, // 必填，公众号的唯一标识
			timestamp: data.timestamp, // 必填，生成签名的时间戳
			nonceStr: data.nonceStr, // 必填，生成签名的随机串
			signature: data.signature, // 必填，签名
			jsApiList: jsApiList || ['chooseImage', 'scanQRCode'] // 必填，需要使用的JS接口列表
		});
		Wxjssdk.error(function(res) {
			console.error('wxjs初始化失败', res);
		});
	}
	/**
	 * 选择图片
	 */
	chooseImage() {
		return new Promise((resolve, reject) => {
			Wxjssdk.chooseImage({
				count: 1, // 默认9
				sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
				sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
				success: function(response) {
					resolve(response.localIds)
				},
				cancel: () => {
					reject("用户取消选择")
				},
				fail: (e) => {
					reject("出错", e)
				}
			});
		})
	}
	/**
	 * 获取本地图片信息：base64
	 */
	getLocalImgData(localId) {
		return new Promise((resolve, reject) => {
			Wxjssdk.getLocalImgData({
				localId: localId, // 图片的localID
				success: function(res) {
					if (res.localData.indexOf('data:image') == 0) {
						resolve(res.localData)
					} else {
						resolve('data:image/jpeg;base64,' + res.localData.replace(/\n/g, ''))
					}
				},
				fail: (e) => {
					reject("出错", e)
				}
			});
		})
	}
	/**
	 * 扫码
	 */
	scanQRCode(scanType) {
		return new Promise((resolve, reject) => {
			Wxjssdk.scanQRCode({
				needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
				scanType: scanType || ["qrCode", "barCode"], // 可以指定扫二维码还是一维码，默认二者都有
				success: function(res) {
					resolve(res.resultStr)
				},
				fail: (e) => {
					reject("出错", e)
				}
			});
		})
	}
	/**
	 * 自定义“分享给朋友”及“分享到QQ”按钮的分享内容
	 * 需要初始化后直接调用才会生效
	 * @param {Object} title
	 * @param {Object} desc
	 * @param {Object} link
	 * @param {Object} imgUrl
	 */
	updateAppMessageShareData(title, desc, link, imgUrl) {
		wx.updateAppMessageShareData({
			title: title, // 分享标题
			desc: desc, // 分享描述
			link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
			imgUrl: imgUrl, // 分享图标
			success: function() {
				// 设置成功
			}
		})
	}
	/**
	 * 自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容（1.4.0）
	 * 需要初始化后直接调用才会生效
	 */
	updateTimelineShareData(title, link, imgUrl) {
		wx.updateTimelineShareData({
			title: title, // 分享标题
			link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
			imgUrl: imgUrl, // 分享图标
			success: function() {
				// 设置成功
			}
		})
	}
}

export default WxJs